/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package persistance.dao;

import java.util.List;
import persistance.model.AllowedRole;
import persistance.model.User;
import persistance.model.UserRole;

/**
 *
 * @author Bobok
 */
public interface UserDAO extends CommonDAO {
    /**
     * zwraca obiekt usera
     * @param username zakładamy ze username jest jedyny (jest kluczem)
     * @return obiekt usera
     */
    User getUser(String username);
    /**
     * Słuzy do logowania
     * zwraca obiek usera jeśli autentykacja się powiodła w przeciwnym razie null
     * @param username
     * @param password
     * @return obiek usera jeśli autentykacja się powiodła w przeciwnym razie null
     */
    User verify(String username, String password);
    /**
     * zwraca wszystkich userów z daną rolą
     * @param role
     * @return
     */
    List<User> getUsersByRole(UserRole role);

    /**
     *
     * @param user
     * @throws Exception jak nie istnieje itp, TODO: rozne rodzaje wyjątków?
     */
    void deleteUser(User user) throws Exception;

    public Object getUserByEmail(String email);

    public List<AllowedRole> getAllowedRoles();

}
